// ==UserScript==
// @name         Video Speed Controller
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  在所有有 video 元素的页面上添加一个播放速度控制按钮，默认播放速度为 1.85 倍。
// @author       你的名字
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const defaultSpeed = 1.85;

    // 创建控制按钮
    let button = document.createElement('button');
    button.innerHTML = '播放速度 ' + defaultSpeed + 'x';
    button.style.position = 'fixed';
    button.style.background = 'green';
    button.style.top = '50px';
    button.style.left = '10px';
    button.style.zIndex = '9999';
    document.body.appendChild(button);

    // 创建下拉选择框
    let select = document.createElement('select');
    let speeds = [1, 1.5, 1.75, 1.85, 2, 2.5];
    speeds.forEach(speed => {
        let option = document.createElement('option');
        option.value = speed;
        option.text = `${speed}x`;
        if (speed === defaultSpeed) {
            option.selected = true;
        }
        select.appendChild(option);
    });
    select.style.position = 'fixed';
    select.style.top = '75px';
    select.style.left = '10px';
    select.style.zIndex = '9999';
    select.style.display = 'none';
    document.body.appendChild(select);

    // 监听按钮点击事件
    button.addEventListener('click', () => {
        select.style.display = select.style.display === 'none' ? 'block' : 'none';
    });

    // 监听下拉选择框变化事件
    select.addEventListener('change', () => {
        let videos = document.querySelectorAll('video');
        let speed = parseFloat(select.value);
        select.style.display = 'none';
        button.innerHTML = '播放速度 ' + speed + 'x';
        videos.forEach(video => {
            video.playbackRate = speed;
        });
    });

    // 设置所有视频元素的初始播放速度
    function setInitialSpeed() {
        let videos = document.querySelectorAll('video');
        videos.forEach(video => {
            video.playbackRate = defaultSpeed;
        });
    }

    // 检测新 video 元素
    let observer = new MutationObserver((mutations) => {
        mutations.forEach((mutation) => {
            if (mutation.addedNodes.length) {
                mutation.addedNodes.forEach((node) => {
                    if (node.tagName === 'VIDEO') {
                        node.playbackRate = defaultSpeed;
                    }
                });
            }
        });
    });

    // 开始观察页面
    observer.observe(document.body, {childList: true, subtree: true});

    // 设置初始播放速度
    setInitialSpeed();

})();
